local 区域滑动查找文字 = require("通用方法集合.区域滑动查找文字并点击.区域滑动查找文字")
local Tools = require("通用方法集合.二次封装方法.Tools")

local 是否使用测试等级=false
local 测试等级=31
local 是否使用测试地图 = false
local 是否强制一键设置=true


local 小号限制={["防御"]=250,["等级"]=45}

local 查找固定区域文字并点击=Tools.查找固定区域文字并点击
local 查找固定区域文字并返回坐标=Tools.查找固定区域文字并返回坐标
local log_通用=require("通用方法集合.二次封装方法.Log").Log_通用
local 每日委托一键设置是否完成="每日委托一键设置是否完成"
local 每日委托一键设置是否完成_强制每日任务版本号记录="每日委托一键设置是否完成_强制每日任务版本号记录"
local 每日委托一键设置是否完成_强制每日任务版本号记录_版本号=require("configs.Config").初始化设置_版本号["每日委托一键设置是否完成_强制每日任务版本号记录_版本号"]  --只要这个值变化了。就会强制一键设置领取任务
local 点击地图延时=200
-- 地区定义
local 地区="地区"
local 巴斯提姆="巴斯提姆"
local 切拉诺="切拉诺"
local 阿维利乌斯="阿维利乌斯"
local 特罗内特尔="特罗内特尔"
local 卡代尔="卡代尔"
local 副本="副本"
local 修炼之林="修炼之林"
local 全部测试地图={["巴斯提姆"] = {"湿鞋林中小径"}}
-- 巴斯提姆地区地图集
local 巴斯提姆_地图集={
    ["30级_讨伐石崖路口"]="石崖路口",
    ["30级_讨伐科利亚山脚"]="科利亚山脚",
    ["31级_讨伐衰败的空地"]="衰败的空地",
    ["31级_讨伐高耸森林草地"]="高耸森林草地",
    ["32级_讨伐科利亚三岔路"]="科利亚三岔路",
    ["32级_讨伐旱地伐木区"]="旱地伐木区",
    ["34级_讨伐席尔瓦因泥潭"]="席尔瓦因泥潭",
    ["34级_讨伐席尔瓦因水库"]="席尔瓦因水库",
    ["45级_讨伐烈日伐木区"]="烈日伐木区",
    ["45级_讨伐湿鞋林中小径"]="湿鞋林中小径",
    ["47级_讨伐回声瀑布"]="回声瀑布",
    ["47级_讨伐希兰半兽人占领地"]="希兰半兽人占领地",
    ["49级_讨伐微风林间小道"]="微风林间小道",
    ["49级_讨伐潮声平原"]="潮声平原"
}
-- 切拉诺地区地图集
local 切拉诺_地图集={
    ["36级_境外的岩石路"]="境外的岩石路",
    ["36级_清滨斜坡"]="清滨斜坡",
    ["39级_阿莱恩高地"]="阿莱恩高地",
    ["39级_灰色苔薛群落"]="灰色苔藓群落",
    ["41级_朝圣者峡谷"]="朝圣者峡谷",
    ["41级_稀疏根营山丘"]="稀疏根茎山丘",
    ["43级_凄凉的坟墓"]="凄凉的坟墓",
    ["43级_枯枝原野"]="枯枝原野",
    ["56级_膝岩山丘"]="膝岩山丘",
    ["56级_膝岩丘陵"]="膝岩丘陵",
    ["57级_山脚草原"]="山脚草原",
    ["57级_阿莱恩盆地"]="阿莱恩盆地",
    ["58级_岩壁狭路"]="岩壁狭路",
    ["58级_泥泞大路"]="泥泞大路",
    ["59级_斯堪尼亚石堆"]="斯堪尼亚石堆",
    ["59级_阿莱恩山峰"]="阿莱恩山峰",
    ["60级_寒风荒地"]="寒风荒地",
    ["60级_斯堪尼亚山顶"]="斯堪尼亚山顶",
    ["61级_空旷的前院"]="空旷的前院",
    ["61级_科莫修道院遗址"]="科莫修道院遗址"
}

-- 阿维利乌斯地区地图集
local 阿维利乌斯_地图集={
    ["51级_讨伐圣人庄园"]="圣人庄园",
    ["51级_讨伐丰饶田野"]="丰饶田野",
    ["53级_讨伐蒙特诺江流域"]="蒙特诺江流域",
    ["53级_讨伐蒙特诺泛洪区"]="蒙特诺泛洪区",
    ["55级_讨伐被污染的神殿遗址"]="被污染的神殿遗址",
    ["55级_讨伐被破坏的旧城址"]="被破坏的旧城址"
}

-- 特罗内特尔地区地图集
local 特罗内特尔_地图集={
    ["50级_讨伐德尔菲亚大路"]="德尔菲亚大路",
    ["52级_讨伐德尔菲亚矿山"]="德尔菲亚矿山",
    ["54级_讨伐特罗宁特工业区"]="特罗宁特工业区",
    ["56级_讨伐卡利夫运输路线"]="卡利夫运输路线",
    ["57级_讨伐飞雪原野"]="飞雪原野",
    ["58级_讨伐瓦特尔树林"]="瓦特尔树林",
    ["59级_讨伐宽容山谷"]="宽容山谷",
    ["60级_讨伐白镜湖"]="白镜湖",
    ["62级_讨伐银尾环湖路"]="银尾环湖路",
    ["64级_讨伐灵敏岩石路"]="灵敏岩石路",
    ["68级_讨伐灵敏坡路"]="灵敏坡路",
    ["70级_讨伐达尼佩尔修道院遗址"]="达尼佩尔修道院遗址",
    ["72级_讨伐希冀平原"]="希冀平原"
}

-- 修炼之林地区地图集
local 修炼之林_地图集={
    ["30级_修炼之林第1区域讨伐"]="修炼之林第1区域",
    ["40级_修炼之林第2区域讨伐"]="修炼之林第2区域",
    ["50级_修炼之林第3区域讨伐"]="修炼之林第3区域",
    ["60级_修炼之林第4区域讨伐"]="修炼之林第4区域",
    ["70级_修炼之林第5区域讨伐"]="修炼之林第5区域"
}

-- 按等级分组的地图（嵌套形式，避免重复定义）
local 巴斯提姆_30级 = {巴斯提姆_地图集["30级_讨伐石崖路口"], 巴斯提姆_地图集["30级_讨伐科利亚山脚"]}
local 巴斯提姆_31级 = {巴斯提姆_30级,巴斯提姆_地图集["31级_讨伐衰败的空地"], 巴斯提姆_地图集["31级_讨伐高耸森林草地"]}
local 巴斯提姆_32级 = {巴斯提姆_31级, 巴斯提姆_地图集["32级_讨伐科利亚三岔路"], 巴斯提姆_地图集["32级_讨伐旱地伐木区"]}
local 巴斯提姆_34级 = {巴斯提姆_32级, 巴斯提姆_地图集["34级_讨伐席尔瓦因泥潭"], 巴斯提姆_地图集["34级_讨伐席尔瓦因水库"]}
local 巴斯提姆_45级 = {巴斯提姆_34级, 巴斯提姆_地图集["45级_讨伐烈日伐木区"], 巴斯提姆_地图集["45级_讨伐湿鞋林中小径"]}
local 巴斯提姆_47级 = {巴斯提姆_45级, 巴斯提姆_地图集["47级_讨伐回声瀑布"], 巴斯提姆_地图集["47级_讨伐希兰半兽人占领地"]}
local 巴斯提姆_49级 = {巴斯提姆_47级, 巴斯提姆_地图集["49级_讨伐微风林间小道"], 巴斯提姆_地图集["49级_讨伐潮声平原"]}

-- 切拉诺地区地图（嵌套形式，避免重复定义）
local 切拉诺_36级 = {切拉诺_地图集["36级_境外的岩石路"], 切拉诺_地图集["36级_清滨斜坡"]}
local 切拉诺_39级 = {切拉诺_36级, 切拉诺_地图集["39级_阿莱恩高地"], 切拉诺_地图集["39级_灰色苔薛群落"]}
local 切拉诺_41级 = {切拉诺_39级, 切拉诺_地图集["41级_朝圣者峡谷"], 切拉诺_地图集["41级_稀疏根营山丘"]}
local 切拉诺_43级 = {切拉诺_41级, 切拉诺_地图集["43级_凄凉的坟墓"], 切拉诺_地图集["43级_枯枝原野"]}
local 切拉诺_56级 = {切拉诺_43级, 切拉诺_地图集["56级_膝岩山丘"], 切拉诺_地图集["56级_膝岩丘陵"]}
local 切拉诺_57级 = {切拉诺_56级, 切拉诺_地图集["57级_山脚草原"], 切拉诺_地图集["57级_阿莱恩盆地"]}
local 切拉诺_58级 = {切拉诺_57级, 切拉诺_地图集["58级_岩壁狭路"], 切拉诺_地图集["58级_泥泞大路"]}
local 切拉诺_59级 = {切拉诺_58级, 切拉诺_地图集["59级_斯堪尼亚石堆"], 切拉诺_地图集["59级_阿莱恩山峰"]}
local 切拉诺_60级 = {切拉诺_59级, 切拉诺_地图集["60级_寒风荒地"], 切拉诺_地图集["60级_斯堪尼亚山顶"]}
local 切拉诺_61级 = {切拉诺_60级, 切拉诺_地图集["61级_空旷的前院"], 切拉诺_地图集["61级_科莫修道院遗址"]}

-- 阿维利乌斯地区地图（嵌套形式，避免重复定义）
local 阿维利乌斯_51级 = {阿维利乌斯_地图集["51级_讨伐圣人庄园"], 阿维利乌斯_地图集["51级_讨伐丰饶田野"]}
local 阿维利乌斯_53级 = {阿维利乌斯_51级, 阿维利乌斯_地图集["53级_讨伐蒙特诺江流域"], 阿维利乌斯_地图集["53级_讨伐蒙特诺泛洪区"]}
local 阿维利乌斯_55级 = {阿维利乌斯_53级, 阿维利乌斯_地图集["55级_讨伐被污染的神殿遗址"], 阿维利乌斯_地图集["55级_讨伐被破坏的旧城址"]}

-- 特罗内特尔地区地图（嵌套形式，避免重复定义）
local 特罗内特尔_50级 = {特罗内特尔_地图集["50级_讨伐德尔菲亚大路"]}
local 特罗内特尔_52级 = {特罗内特尔_50级, 特罗内特尔_地图集["52级_讨伐德尔菲亚矿山"]}
local 特罗内特尔_54级 = {特罗内特尔_52级, 特罗内特尔_地图集["54级_讨伐特罗宁特工业区"]}
local 特罗内特尔_56级 = {特罗内特尔_54级, 特罗内特尔_地图集["56级_讨伐卡利夫运输路线"]}
local 特罗内特尔_57级 = {特罗内特尔_56级, 特罗内特尔_地图集["57级_讨伐飞雪原野"]}
local 特罗内特尔_58级 = {特罗内特尔_57级, 特罗内特尔_地图集["58级_讨伐瓦特尔树林"]}
local 特罗内特尔_59级 = {特罗内特尔_58级, 特罗内特尔_地图集["59级_讨伐宽容山谷"]}
local 特罗内特尔_60级 = {特罗内特尔_59级, 特罗内特尔_地图集["60级_讨伐白镜湖"]}
local 特罗内特尔_62级 = {特罗内特尔_60级, 特罗内特尔_地图集["62级_讨伐银尾环湖路"]}
local 特罗内特尔_64级 = {特罗内特尔_62级, 特罗内特尔_地图集["64级_讨伐灵敏岩石路"]}
local 特罗内特尔_68级 = {特罗内特尔_64级, 特罗内特尔_地图集["68级_讨伐灵敏坡路"]}
local 特罗内特尔_70级 = {特罗内特尔_68级, 特罗内特尔_地图集["70级_讨伐达尼佩尔修道院遗址"]}
local 特罗内特尔_72级 = {特罗内特尔_70级, 特罗内特尔_地图集["72级_讨伐希冀平原"]}

-- 修炼之林地区地图（嵌套形式，避免重复定义）
local 修炼之林_30级 = {修炼之林_地图集["30级_修炼之林第1区域讨伐"]}
local 修炼之林_40级 = {修炼之林_30级, 修炼之林_地图集["40级_修炼之林第2区域讨伐"]}
local 修炼之林_50级 = {修炼之林_40级, 修炼之林_地图集["50级_修炼之林第3区域讨伐"]}
local 修炼之林_60级 = {修炼之林_50级, 修炼之林_地图集["60级_修炼之林第4区域讨伐"]}
local 修炼之林_70级 = {修炼之林_60级, 修炼之林_地图集["70级_修炼之林第5区域讨伐"]}
-- 递归函数：从嵌套表格中提取所有地图名称
local function 提取地图名称(地图列表, 结果表)
    结果表 = 结果表 or {} 
    if type(地图列表) == "table" then
        for 键, 项目 in pairs(地图列表) do
            if type(项目) == "string" and 项目 ~= "" then
                table.insert(结果表, 项目)
            elseif type(项目) == "table" then
                提取地图名称(项目, 结果表)
            end
        end
    end
    return 结果表
end

-- 从地图集中查找地图等级
local function 从地图集查找等级(地图集, 地图名称)
    for 键, 值 in pairs(地图集) do
        if 值 == 地图名称 then
            local 等级 = string.match(键, "(%d+)级")
            if 等级 then
                return tonumber(等级)
            end
        end
    end
    return nil
end

-- 从地图名称中提取等级信息
local function 提取地图等级(地图名称)
    -- 匹配格式如 "30级_讨伐石崖路口" 或 "修炼之林第1区域"
    local 等级匹配 = string.match(地图名称, "(%d+)级")
    if 等级匹配 then
        return tonumber(等级匹配)
    end
    
    -- 修炼之林特殊处理
    local 修炼等级匹配 = string.match(地图名称, "修炼之林第(%d+)区域")
    if 修炼等级匹配 then
        local 区域 = tonumber(修炼等级匹配)
        return (区域 - 1) * 10 + 30  -- 第1区域=30级，第2区域=40级，以此类推
    end
    
    -- 从现有的地图集中查找对应的等级
    local 所有地图集 = {巴斯提姆_地图集, 切拉诺_地图集, 阿维利乌斯_地图集, 特罗内特尔_地图集, 修炼之林_地图集}
    
    for _, 地图集 in ipairs(所有地图集) do
        local 等级 = 从地图集查找等级(地图集, 地图名称)
        if 等级 then
            return 等级
        end
    end
    
    return 0  -- 无法解析等级时返回0（最低优先级）
end
-- 限制地图数量，保留高等级地图
local function 限制地图数量(所有地图)
    -- 统计所有地图
    local 所有地图列表 = {}
    for 地区名称, 地图列表 in pairs(所有地图) do
        if 地图列表 and type(地图列表) == "table" then
            local 地区地图列表 = 提取地图名称(地图列表)
            for _, 地图名称 in ipairs(地区地图列表) do
                table.insert(所有地图列表, {
                    地区 = 地区名称,
                    地图名称 = 地图名称,
                    等级 = 提取地图等级(地图名称)
                })
            end
        end
    end
    
    -- 如果总数不超过30个，直接返回
    if #所有地图列表 <= 30 then
        return 所有地图
    end
    
    -- 先按等级从高到低排序，保留高等级地图
    table.sort(所有地图列表, function(a, b)
        return a.等级 > b.等级
    end)
    
    -- 保留前30个地图（高等级地图）
    local 保留地图列表 = {}
    for i = 1, math.min(30, #所有地图列表) do
        table.insert(保留地图列表, 所有地图列表[i])
    end
    
    -- 再按等级从低到高排序，方便查看
    table.sort(保留地图列表, function(a, b)
        return a.等级 < b.等级
    end)
    
    -- 重新构建所有地图表格
    local 限制后的地图 = {}
    for _, 地图信息 in ipairs(保留地图列表) do
        local 地区名称 = 地图信息.地区
        if not 限制后的地图[地区名称] then
            限制后的地图[地区名称] = {}
        end
        table.insert(限制后的地图[地区名称], 地图信息.地图名称)
    end
    
    log_通用("地图数量限制：从 " .. #所有地图列表 .. " 个地图限制到 " .. #保留地图列表 .. " 个地图")
    
    -- 打印限制后的地图详情
    --[[
    log_通用("=== 限制后的地图详情 ===")
    for 地区名称, 地图列表 in pairs(限制后的地图) do
        log_通用("地区: " .. 地区名称 .. " (共 " .. #地图列表 .. " 个地图)")
        for i, 地图名称 in ipairs(地图列表) do
            local 等级 = 提取地图等级(地图名称)
            log_通用("  " .. i .. ". " .. 地图名称 .. " (等级: " .. 等级 .. ")")
        end
    end
    log_通用("=== 地图详情结束 ===")
    --]]
    return 限制后的地图
end

local function 限制地图类型(所有地图)
    local 防御 = 0  -- 默认30级
    if 角色数据内容 and 角色数据内容.记录内容 and 角色数据内容.记录内容.防御 then
        防御 = _ENV["到整数"](角色数据内容.记录内容.防御)
        log_通用("从角色数据文件读取到防御: " .. 防御)
        
    else
        log_通用("无法从角色数据文件读取防御，使用默认值: " .. 防御)
    end

    log_通用("防御======"..tostring(防御))
    if 防御<=300 then
        所有地图.修炼之林 = {}
        log_通用("防御小于300,不打修炼之林")
    end
    return 所有地图
end

local 勾选成功 = 0
local 总勾选成功 = 0
local 总地图数量 = 0
-- 默认地图设置
local function 通过等级初始化地图(等级)
        if 是否使用测试等级 then
            等级 = 测试等级
        end
        --副本地图选中
        local 讨伐地图_巴斯提姆 = {}
        local 讨伐地图_切拉诺 = {}
        local 讨伐地图_阿维利乌斯 = {}
        local 讨伐地图_特罗内特尔 = {}
        local 讨伐地图_修炼之林 = {}
    

        -- 修炼之林地图选择
        if 等级 >= 30 and 等级 < 40 then
            讨伐地图_修炼之林 = 修炼之林_30级
        elseif 等级 >= 40 and 等级 < 50 then
            讨伐地图_修炼之林 = 修炼之林_40级
        elseif 等级 >= 50 and 等级 < 60 then
            讨伐地图_修炼之林 = 修炼之林_50级
        elseif 等级 >= 60 and 等级 < 70 then
            讨伐地图_修炼之林 = 修炼之林_60级
        elseif 等级 >= 70 then
            讨伐地图_修炼之林 = 修炼之林_70级
        end

        -- 地区地图选择 - 每个等级单独判断
        if 等级 == 30 then
            讨伐地图_巴斯提姆 = 巴斯提姆_30级
        elseif 等级 == 31 then
            讨伐地图_巴斯提姆 = 巴斯提姆_31级
        elseif 等级 == 32 then
            讨伐地图_巴斯提姆 = 巴斯提姆_32级
        elseif 等级 == 33 then
            讨伐地图_巴斯提姆 = 巴斯提姆_32级
        elseif 等级 == 34 then
            讨伐地图_巴斯提姆 = 巴斯提姆_34级
        elseif 等级 == 35 then
            讨伐地图_巴斯提姆 = 巴斯提姆_34级
        elseif 等级 == 36 then
            讨伐地图_巴斯提姆 = 巴斯提姆_34级
            讨伐地图_切拉诺 = 切拉诺_36级
        elseif 等级 == 37 then
            讨伐地图_巴斯提姆 = 巴斯提姆_34级
            讨伐地图_切拉诺 = 切拉诺_36级
        elseif 等级 == 38 then
            讨伐地图_巴斯提姆 = 巴斯提姆_34级
            讨伐地图_切拉诺 = 切拉诺_36级
        elseif 等级 == 39 then
            讨伐地图_巴斯提姆 = 巴斯提姆_34级
            讨伐地图_切拉诺 = 切拉诺_39级
        elseif 等级 == 40 then
            讨伐地图_巴斯提姆 = 巴斯提姆_34级
            讨伐地图_切拉诺 = 切拉诺_39级
        elseif 等级 == 41 then
            讨伐地图_巴斯提姆 = 巴斯提姆_34级
            讨伐地图_切拉诺 = 切拉诺_41级
        elseif 等级 == 42 then
            讨伐地图_巴斯提姆 = 巴斯提姆_34级
            讨伐地图_切拉诺 = 切拉诺_41级
        elseif 等级 == 43 then
            讨伐地图_巴斯提姆 = 巴斯提姆_34级
            讨伐地图_切拉诺 = 切拉诺_43级
        elseif 等级 == 44 then
            讨伐地图_巴斯提姆 = 巴斯提姆_34级
            讨伐地图_切拉诺 = 切拉诺_43级
        elseif 等级 == 45 then
            讨伐地图_巴斯提姆 = 巴斯提姆_45级
            讨伐地图_切拉诺 = 切拉诺_43级
        elseif 等级 == 46 then
            讨伐地图_巴斯提姆 = 巴斯提姆_45级
            讨伐地图_切拉诺 = 切拉诺_43级
        elseif 等级 == 47 then
            讨伐地图_巴斯提姆 = 巴斯提姆_47级
            讨伐地图_切拉诺 = 切拉诺_43级
        elseif 等级 == 48 then
            讨伐地图_巴斯提姆 = 巴斯提姆_47级
            讨伐地图_切拉诺 = 切拉诺_43级
        elseif 等级 == 49 then
            讨伐地图_巴斯提姆 = 巴斯提姆_49级
            讨伐地图_切拉诺 = 切拉诺_43级
        elseif 等级 == 50 then
            讨伐地图_巴斯提姆 = 巴斯提姆_49级
            讨伐地图_切拉诺 = 切拉诺_43级
        elseif 等级 == 51 then
            讨伐地图_巴斯提姆 = 巴斯提姆_49级
            讨伐地图_切拉诺 = 切拉诺_43级
            讨伐地图_阿维利乌斯 = 阿维利乌斯_51级
        elseif 等级 == 52 then
            讨伐地图_巴斯提姆 = 巴斯提姆_49级
            讨伐地图_切拉诺 = 切拉诺_43级
            讨伐地图_阿维利乌斯 = 阿维利乌斯_51级
            讨伐地图_特罗内特尔 = 特罗内特尔_52级
        elseif 等级 == 53 then
            讨伐地图_巴斯提姆 = 巴斯提姆_49级
            讨伐地图_切拉诺 = 切拉诺_43级
            讨伐地图_阿维利乌斯 = 阿维利乌斯_53级
            讨伐地图_特罗内特尔 = 特罗内特尔_52级
        elseif 等级 == 54 then
            讨伐地图_巴斯提姆 = 巴斯提姆_49级
            讨伐地图_切拉诺 = 切拉诺_43级
            讨伐地图_阿维利乌斯 = 阿维利乌斯_53级
            讨伐地图_特罗内特尔 = 特罗内特尔_54级
        elseif 等级 == 55 then
            讨伐地图_巴斯提姆 = 巴斯提姆_49级
            讨伐地图_切拉诺 = 切拉诺_43级
            讨伐地图_阿维利乌斯 = 阿维利乌斯_55级
            讨伐地图_特罗内特尔 = 特罗内特尔_54级
        elseif 等级 == 56 then
            讨伐地图_巴斯提姆 = 巴斯提姆_49级
            讨伐地图_切拉诺 = 切拉诺_56级
            讨伐地图_阿维利乌斯 = 阿维利乌斯_55级
            讨伐地图_特罗内特尔 = 特罗内特尔_56级
        elseif 等级 == 57 then
            讨伐地图_巴斯提姆 = 巴斯提姆_49级
            讨伐地图_切拉诺 = 切拉诺_57级
            讨伐地图_阿维利乌斯 = 阿维利乌斯_55级
            讨伐地图_特罗内特尔 = 特罗内特尔_57级
        elseif 等级 == 58 then
            讨伐地图_巴斯提姆 = 巴斯提姆_49级
            讨伐地图_切拉诺 = 切拉诺_58级
            讨伐地图_阿维利乌斯 = 阿维利乌斯_55级
            讨伐地图_特罗内特尔 = 特罗内特尔_58级
        elseif 等级 == 59 then
            讨伐地图_巴斯提姆 = 巴斯提姆_49级
            讨伐地图_切拉诺 = 切拉诺_59级
            讨伐地图_阿维利乌斯 = 阿维利乌斯_55级
            讨伐地图_特罗内特尔 = 特罗内特尔_59级
        elseif 等级 == 60 then
            讨伐地图_巴斯提姆 = 巴斯提姆_49级
            讨伐地图_切拉诺 = 切拉诺_60级
            讨伐地图_阿维利乌斯 = 阿维利乌斯_55级
            讨伐地图_特罗内特尔 = 特罗内特尔_60级
        elseif 等级 == 61 then
            讨伐地图_巴斯提姆 = 巴斯提姆_49级
            讨伐地图_切拉诺 = 切拉诺_61级
            讨伐地图_阿维利乌斯 = 阿维利乌斯_55级
            讨伐地图_特罗内特尔 = 特罗内特尔_60级
        elseif 等级 == 62 then
            讨伐地图_巴斯提姆 = 巴斯提姆_49级
            讨伐地图_切拉诺 = 切拉诺_61级
            讨伐地图_阿维利乌斯 = 阿维利乌斯_55级
            讨伐地图_特罗内特尔 = 特罗内特尔_62级
        elseif 等级 == 63 then
            讨伐地图_巴斯提姆 = 巴斯提姆_49级
            讨伐地图_切拉诺 = 切拉诺_61级
            讨伐地图_阿维利乌斯 = 阿维利乌斯_55级
            讨伐地图_特罗内特尔 = 特罗内特尔_62级
        elseif 等级 == 64 then
            讨伐地图_巴斯提姆 = 巴斯提姆_49级
            讨伐地图_切拉诺 = 切拉诺_61级
            讨伐地图_阿维利乌斯 = 阿维利乌斯_55级
            讨伐地图_特罗内特尔 = 特罗内特尔_64级
        elseif 等级 == 65 then
            讨伐地图_巴斯提姆 = 巴斯提姆_49级
            讨伐地图_切拉诺 = 切拉诺_61级
            讨伐地图_阿维利乌斯 = 阿维利乌斯_55级
            讨伐地图_特罗内特尔 = 特罗内特尔_64级
        elseif 等级 == 66 then
            讨伐地图_巴斯提姆 = 巴斯提姆_49级
            讨伐地图_切拉诺 = 切拉诺_61级
            讨伐地图_阿维利乌斯 = 阿维利乌斯_55级
            讨伐地图_特罗内特尔 = 特罗内特尔_64级
        elseif 等级 == 67 then
            讨伐地图_巴斯提姆 = 巴斯提姆_49级
            讨伐地图_切拉诺 = 切拉诺_61级
            讨伐地图_阿维利乌斯 = 阿维利乌斯_55级
            讨伐地图_特罗内特尔 = 特罗内特尔_64级
        elseif 等级 == 68 then
            讨伐地图_巴斯提姆 = 巴斯提姆_49级
            讨伐地图_切拉诺 = 切拉诺_61级
            讨伐地图_阿维利乌斯 = 阿维利乌斯_55级
            讨伐地图_特罗内特尔 = 特罗内特尔_68级
        elseif 等级 == 69 then
            讨伐地图_巴斯提姆 = 巴斯提姆_49级
            讨伐地图_切拉诺 = 切拉诺_61级
            讨伐地图_阿维利乌斯 = 阿维利乌斯_55级
            讨伐地图_特罗内特尔 = 特罗内特尔_68级
        elseif 等级 == 70 then
            讨伐地图_巴斯提姆 = 巴斯提姆_49级
            讨伐地图_切拉诺 = 切拉诺_61级
            讨伐地图_阿维利乌斯 = 阿维利乌斯_55级
            讨伐地图_特罗内特尔 = 特罗内特尔_70级
        elseif 等级 == 71 then
            讨伐地图_巴斯提姆 = 巴斯提姆_49级
            讨伐地图_切拉诺 = 切拉诺_61级
            讨伐地图_阿维利乌斯 = 阿维利乌斯_55级
            讨伐地图_特罗内特尔 = 特罗内特尔_70级
        elseif 等级 == 72 then
            讨伐地图_巴斯提姆 = 巴斯提姆_49级
            讨伐地图_切拉诺 = 切拉诺_61级
            讨伐地图_阿维利乌斯 = 阿维利乌斯_55级
            讨伐地图_特罗内特尔 = 特罗内特尔_72级
        end



        local 所有地图={
            ["巴斯提姆"] = 讨伐地图_巴斯提姆,
            ["切拉诺"] = 讨伐地图_切拉诺,
            ["阿维利乌斯"] = 讨伐地图_阿维利乌斯,
            ["特罗内特尔"] = 讨伐地图_特罗内特尔,
            ["修炼之林"] = 讨伐地图_修炼之林
        }
        所有地图 = 限制地图类型(所有地图)
        所有地图 = 限制地图数量(所有地图)
        if 是否使用测试地图 then
            所有地图 = 全部测试地图
        end
    
        return 所有地图
end

local function 点击选择连续进行()
    local 讨伐_连续进行 = {804 , 964 , 1000 , 1038 ,
            "80715a","-2|9|ad9979|-2|22|675b49|11|21|f3d8a9|26|15|746651|41|19|cab38c|90|21|70634f|89|3|a08e70|14|8|c1ac87|35|1|544a3c",0,0.9
    }
    local 讨伐_自动移动 = {1358 , 973 , 1493 , 1014 ,
        "D2CBB9-101010" ,
        "52|-7|5C4D38-101010|41|-9|6C5F4A-101010|32|-9|7C6646-101010|14|-12|64543B-101010|0|-12|70644D-101010|-38|-12|C8BFAE-101010|-38|-10|60523B-101010|-13|-8|ABA290-101010|3|-8|665842-101010|33|-7|7C6646-101010|42|-7|E1DAC8-101010|31|-7|7E6847-101010|21|-5|BAB09F-101010|-4|-5|77674E-101010|21|-5|BAB09F-101010|21|-5|BAB09F-101010|-12|-3|83704F-101010|12|-3|DBD4C2-101010|-18|-3|5C4E39-101010" , 0 , 0.9
    }
    local 讨伐_地区打开箭头={22,217,286,227,
    "2b2624","25|1|64584c|28|2|b3a484|28|9|342e26|23|14|9d9076|21|16|b6a88c|18|21|766c59|16|25|947759|12|18|8a7e6c|8|12|8d7f6f|5|6|a99e89|16|8|24211d|13|5|3b352f",0,0.9
    }
    local 讨伐_副本打开箭头={20,284,300,664,
        "3c3833","4|0|625c50|9|0|423d36|13|5|504941|14|7|6f695d|16|9|595244|22|3|665a4d|28|0|645b4b|31|1|9c8e73|28|6|928167|25|11|79705c|19|21|5c5446|15|24|6b5844|12|15|b1a493|8|12|716659|7|10|938776|15|14|baae9b",0,0.9
    }
    --[[
    if _ENV["图色_多点找色Ex"]( 讨伐_连续进行 , 0.9 , 0 , 230 , 0 , 1 , true ) then
        local 坐标差=5
        _ENV["鼠标_随机点击"](1100-坐标差 ,938-坐标差,1100+坐标差,938+坐标差)
        _ENV["鼠标_随机点击"](903-坐标差 ,1000-坐标差,903+坐标差,1000+坐标差)
    else
        log_通用("未找到连续进行")
    end
    --]]
    _ENV["图色_多点找色Ex"]( 讨伐_地区打开箭头 , 0.9 , 0 , 0 , 0 , 1 , true )
    _ENV["图色_多点找色Ex"]( 讨伐_副本打开箭头 , 0.9 , 0 , 0 , 0 , 1 , true ) 


    for i = 1 , 10 do

        local 查找结果_目标位置= Tools.查找固定区域文字并返回文字({1023,968,1191,1034})
        local 查找结果_整个区域= Tools.查找固定区域文字并返回文字({1023,844,1191,1034})
        if 查找结果_目标位置 and 查找结果_目标位置=="使用" then
            log_通用("已经设置好连续进行了，不需要再设置")
            return true
        elseif Tools.查找固定区域文字并点击({1023,844,1191,1034},"使用",500,true) then

        else
            _ENV["鼠标_随机点击"] (1023,968,2,2)
        end
    end
    log_通用("连续进行设置失败")
    return false
    

end

local function 获取当前等级()
    local 角色数据内容 = _ENV["文件_读取记录"]("角色数据")
    log_通用("角色数据内容: " .. tostring(角色数据内容))
    
    local 等级 = 30  -- 默认30级
    if 角色数据内容 and 角色数据内容.记录内容 and 角色数据内容.记录内容.人物等级 then
        等级 = _ENV["到整数"](角色数据内容.记录内容.人物等级)
        log_通用("从角色数据文件读取到等级: " .. 等级)
        
    else
        log_通用("无法从角色数据文件读取等级，使用默认值: " .. 等级)
    end

    local 防御 = 0  -- 默认30级
    if 角色数据内容 and 角色数据内容.记录内容 and 角色数据内容.记录内容.防御 then
        防御 = _ENV["到整数"](角色数据内容.记录内容.防御)
        log_通用("从角色数据文件读取到防御: " .. 防御)
        
    else
        log_通用("无法从角色数据文件读取防御，使用默认值: " .. 防御)
    end

    log_通用("防御======"..tostring(防御))
    if 防御<=小号限制.防御 then
        等级=小号限制.等级  
        log_通用("防御小于"..小号限制.防御.."，设置等级为"..小号限制.等级)
    end
    return 等级
end

local function 点击地图()
    log_通用("进入点击地图")
    -- 获取当前等级（需要从其他地方获取）
    
    -- 读取角色数据文件
   
    
    local 所有地图 = 通过等级初始化地图(获取当前等级())

    -- 总体统计
    总勾选成功 = 0
    总地图数量 = 0
    -- 定义区域坐标（根据游戏界面调整）
    local 地区区域 = {16, 282, 294, 896}  -- 左侧地区选择区域
    local 地图区域 = {344, 253, 1230, 942}  -- 右侧地图列表区域
    local 地图编号=0
    -- 遍历所有地图
    for 地区名称, 地图列表 in pairs(所有地图) do
        -- 只要是表就提取名称，再判断是否为空
        if 地图列表 and type(地图列表) == "table" then
            --log_通用("开始处理地区: " .. 地区名称)
            
            -- 从嵌套表格中提取所有地图名称
        
            
            local 地图名称列表 = 提取地图名称(地图列表)
           
            
            if #地图名称列表 > 0 then
                总地图数量 = 总地图数量 + #地图名称列表
                
                
                -- 点击地区名称
                local 地区点击成功 = 区域滑动查找文字.查找文字(
                    地区区域[1], 地区区域[2], 地区区域[3], 地区区域[4],
                    地区名称, 10, 点击地图延时,"地区选择"
                )
                
                if 地区点击成功 then
                    log_通用("成功点击地区: " .. 地区名称)
                    _ENV["延迟"](点击地图延时)  -- 等待地区切换动画
                    
                    -- 初始化接受成功计数和未识别地图列表
                    local 勾选成功 = 0
                    local 未识别到的地图 = {}
                    
                    -- 遍历该地区的地图名称
                    for i, 地图名称 in ipairs(地图名称列表) do
                        --log_通用("尝试点击地图: " .. 地图名称)
                        
                        -- 点击地图名称
                        local 地图点击成功 = 区域滑动查找文字.查找文字(
                            地图区域[1], 地图区域[2], 地图区域[3], 地图区域[4],
                            地图名称, 1000, 点击地图延时,"地图选择"
                        )
                        
                        if 地图点击成功 then
                            log_通用("成功点击地图: " .. 地图名称)
                            --_ENV["延迟"](点击地图延时)  -- 等待地图选择
                            勾选成功 = 勾选成功 + 1
                        else
                            log_通用("未找到地图: " .. 地图名称)
                            table.insert(未识别到的地图, 地图名称)
                        end
                        
                        -- 检查是否完成所有地图
                        if _ENV["到数值"](勾选成功) == _ENV["到数值"](#地图名称列表) then
                            log_通用(地区名称 .. " 领取完成")
                            break
                        end
                    end
                    
                    -- 二次识别：处理未识别到的地图
                    if #未识别到的地图 > 0 then
                        log_通用("二次识别 " .. 地区名称 .. " 未识别的地图")
                        for i, 地图名称 in ipairs(未识别到的地图) do
                            log_通用("二次尝试点击地图: " .. 地图名称)
                            
                            local 地图点击成功 = 区域滑动查找文字.查找文字(
                                地图区域[1], 地图区域[2], 地图区域[3], 地图区域[4],
                                地图名称, 1000, 点击地图延时,"地图选择"
                            )
                            
                            if 地图点击成功 then
                                log_通用("二次识别成功点击地图: " .. 地图名称)
                                _ENV["延迟"](点击地图延时)
                               勾选成功 = 勾选成功 + 1
                            end
                            
                            if _ENV["到数值"](勾选成功) == _ENV["到数值"](#未识别到的地图) then
                                log_通用(地区名称 .. " 二次识别领取完成")
                                break
                            end
                        end
                    end
                    
                    总勾选成功 = 总勾选成功 + 勾选成功
                    log_通用(地区名称 .. " 总共勾选 " .. 勾选成功 .. " 个任务")
                else
                    log_通用("未找到地区: " .. 地区名称)
                end
            else
                log_通用("地区 " .. 地区名称 .. " 没有有效地图")
            end
        else
            log_通用("跳过空地区: " .. 地区名称)
        end
       地图编号=地图编号+1
    end
    if 地图编号>=#所有地图 then
        log_通用("地图点击完成")
        log_通用("总计：成功接受 " .. 总勾选成功 .. "/" .. 总地图数量 .. " 个任务")
        return true
    end
    return false
end

local function 检测已接受图标并开始()
        -- 已接受任务图标的特征（羽毛/叶子图标）
        local 已接受任务图标 = {1140, 248, 1214, 843,
        "4a4231","-6|4|695e4b|-9|9|a69578|-11|13|b7a689|-11|23|b7a789|-13|32|766c52|-8|23|948772|-5|20|837561|-1|9|5f5544|8|10|81705d|9|19|665948|6|29|8d795e|1|34|877b5a|-8|37|6c5f49|-21|33|7c7458|-25|24|76674f|-25|15|918060|-23|5|70604a",0,0.9
        }
        -- 瞬间移动按钮区域
        local 瞬间移动按钮区域 = {1634, 973, 1765, 1007}
        local 是否瞬移到任务位置确定按钮区域={1059, 771, 1131, 806}
   
        if _ENV["图色_多点找色Ex"](已接受任务图标, 0.9, 0, 0, 0, 1, false) then
            log_通用("检测到已接受任务图标，开始处理")
            -- 点击已接受任务图标
            if _ENV["图色_多点找色Ex"](已接受任务图标, 0.9, 0, 0, 0, 1, true) then
                log_通用("成功点击已接受任务图标")
                _ENV["延迟"](1000)
                
                -- 检测并点击瞬间移动按钮
                if 查找固定区域文字并点击(瞬间移动按钮区域, "瞬间移动", 点击地图延时, true) then
                    log_通用("成功点击瞬间移动按钮")
                    if 查找固定区域文字并点击(是否瞬移到任务位置确定按钮区域, "确认", 点击地图延时, true) then
                        log_通用("成功点击是否瞬移到任务位置确定按钮")
                        _ENV["延迟"](4000)
                        return true
                    else
                        log_通用("未找到是否瞬移到任务位置确定按钮")
                    end
                else
                    log_通用("未找到瞬间移动按钮")
                end
            else
                log_通用("点击已接受任务图标失败")
            end
        else
            log_通用("该地区未检测到已接受任务图标，跳到下一个地区")
            -- 直接跳到下一个地区，不进行滑动查找
        end
end

local function 找色_点击完成委托任务图标()
    local 找色_完成委托任务 = {1700 , 134 , 1794 , 505 ,
	"403646","-9|7|7e6a8b|-8|6|b495c9|-9|20|7c6889|-6|19|b596ca|10|20|74637f|4|20|bd9dd4|14|20|a78bbb|22|21|6d5c78|28|20|b495c9|31|15|53475a|30|19|af91c3|22|13|756280|27|1|675670|22|1|473d4d|25|7|a98dbd|28|8|4f4455|15|7|bb9bd2|8|4|b899ce|0|8|b697cc",0,0.9
    }

    log_通用("开启主线任务列表")
    开启主线任务列表()

    if _ENV["图色_多点找色Ex"](找色_完成委托任务 , 0.90 , 0 , 0 , 0 , 1 , true) then
        log_通用("领取成功")
    end

    local x,y=查找固定区域文字并返回坐标({1700 , 134 , 1794 , 512}, "接受" )
    if x and y then
        log_通用("找到接受二字"..x..","..y)
        if 查找固定区域文字并点击({1700 ,y-30 , 1794 ,y+30}, "讨伐" , 1000 , true) then
            log_通用("接受讨伐任务成功")
        elseif 查找固定区域文字并点击({1700 ,y-30 , 1794 ,y+30}, "修炼之林" , 1000 , true) then
            log_通用("接受击杀修炼之林任务成功")
        end
    end
end

local function 保存委托完成时间()
    找色_点击完成委托任务图标()
    _ENV["文件_保存完成时间"]("每日委托任务结束时间保存")
    _ENV["文件_保存完成时间"]("每日委托任务")
end
local function 一键接受()

    if  查找固定区域文字并点击({40, 982, 259, 1037}, "一键接受", 点击地图延时,true) then

        log_通用("开始一键接受流程")
        
        -- 获取当前等级
        local 角色数据内容 = _ENV["文件_读取记录"]("角色数据")
        local 等级 = 30  -- 默认30级
        if 角色数据内容 and 角色数据内容.记录内容 and 角色数据内容.记录内容.人物等级 then
            等级 = _ENV["到整数"](角色数据内容.记录内容.人物等级)
        end
        log_通用("一键接受使用等级: " .. 等级)
        local 所有地图 = 通过等级初始化地图(等级)
        
        -- 定义区域坐标
        local 地区区域 = {16, 282, 294, 896}  -- 左侧地区选择区域
        local 地图区域 = {344, 253, 1230, 942}  -- 右侧地图列表区域
        --先检测一次
        if 检测已接受图标并开始() then 
            return true
        end
        -- 遍历所有地区
        for 地区名称, 地图列表 in pairs(所有地图) do
            if 地图列表 and type(地图列表) == "table" and #地图列表 > 0 then
                log_通用("处理地区: " .. 地区名称)
                
                -- 点击地区名称
                local 地区点击成功 = 区域滑动查找文字.查找文字(
                    地区区域[1], 地区区域[2], 地区区域[3], 地区区域[4],
                    地区名称, 10, 点击地图延时,"地区选择"
                )
                
                if 地区点击成功 then
                    log_通用("成功点击地区: " .. 地区名称)
                    _ENV["延迟"](点击地图延时)  -- 等待地区切换
                    
                    -- 直接检测中间区域是否有已接受任务图标
                    if 检测已接受图标并开始() then 
                        return true
                    end
                else
                    log_通用("未找到地区: " .. 地区名称)
                end
            else
                log_通用("跳过空地区: " .. 地区名称)
            end
        end
        
        log_通用("一键接受完成，所有地区都未找到已接受任务")
        保存委托完成时间()
        return false
    end
    return false
end

local function 保存勾选的地图设置()
     log_通用("准备调用点击地图")
     local 点击结果 = 点击地图()
     log_通用("点击地图返回: " .. tostring(点击结果))
     if 点击结果 then
         if 查找固定区域文字并点击({90,909,198,941}, "保存设置", 点击地图延时,true) then
             log_通用("准备保存记录，文件名: " .. 每日委托一键设置是否完成 .. "，内容: 1")
             log_通用("SD卡路径: " .. tostring(_ENV["SD卡路径"]))
             log_通用("完整保存路径: " .. tostring(_ENV["SD卡路径"]) .. 每日委托一键设置是否完成 .. ".txt")
             _ENV["文件_保存记录"](每日委托一键设置是否完成,_ENV["到数值"](获取当前等级()))
             _ENV["文件_保存记录"](每日委托一键设置是否完成_强制每日任务版本号记录,_ENV["到数值"](每日委托一键设置是否完成_强制每日任务版本号记录_版本号))
             log_通用("记录保存完成")
             if 一键接受() then
                 log_通用("一键设置和一键接受都完成")
                 return true
             else
                 log_通用("一键设置完成，但一键接受失败")
                 return true
             end
         end
     end
     return false
end

local function 一键设置()
    if 查找固定区域文字并点击({42,902,265,956}, "一键接受设置", 1000,true) then
        if 查找固定区域文字并点击({40,828,260,882}, "重置设置", 1000,true) then
            if 查找固定区域文字并点击({1053,656,1129,692}, "确认", 1000,true) then 
                if 查找固定区域文字并点击({90,909,198,941}, "保存设置", 1000,false) then 
                   return 保存勾选的地图设置()
                end
            elseif 查找固定区域文字并点击({90,909,198,941}, "保存设置", 1000,false) then 
                return 保存勾选的地图设置()
            end
        end
    end
    return false
end

local function 读取强制每日委托版本号()
    local 读取记录 = _ENV["文件_读取记录"](每日委托一键设置是否完成)
    local 读取等级 = 0
    
    if 读取记录 and 读取记录.记录内容 then
        读取等级 = 读取记录.记录内容
    end
    log_通用("文件读取等级内容: " .. tostring(读取等级))

    local 读取记录_强制每日任务 = _ENV["文件_读取记录"](每日委托一键设置是否完成_强制每日任务版本号记录)
    local 读取结果_强制每日任务=0
    if 读取记录_强制每日任务 and 读取记录_强制每日任务.记录内容 then
        读取结果_强制每日任务 = 读取记录_强制每日任务.记录内容
    end
    log_通用("读取文件内容_强制每日任务: " .. tostring(读取结果_强制每日任务))
    return 读取等级 ,读取结果_强制每日任务
end

local function 点击一键开始委托()
    读取等级, 读取版本号=读取强制每日委托版本号()

    local 当前等级 = 获取当前等级()
    log_通用("当前等级: " .. 当前等级)

    if (读取等级 >= 1 and 读取等级<=当前等级) and (是否强制一键设置==false) and (读取版本号==每日委托一键设置是否完成_强制每日任务版本号记录_版本号) then
        log_通用("检测到一键设置已完成，执行一键接受")
        return 一键接受()
    else
        log_通用("检测到一键设置未完成，执行一键设置")
        点击选择连续进行()
        return 一键设置()
    end
end

local function 领取每日委托任务()
        log_通用("领取每日委托任务####")
        local 找色_任务页面 = {99 , 23 , 187 , 74 ,
            "9B8B6F-101010" ,
            "-8|-4|A69577-101010|-12|-4|B5A382-101010|-12|-2|B5A382-101010|-13|2|97876C-101010|-18|6|9D8E71-101010|-24|-9|B5A382-101010|-14|-12|B5A382-101010|-6|-20|B5A382-101010|-14|-24|9B8C6F-101010|-17|-17|B2A080-101010|-13|-13|B5A382-101010|-5|-9|8E8066-101010|1|-9|B5A382-101010|-20|-8|A79678-101010|-36|-7|B5A382-101010|-45|-8|B5A382-101010" , 0 , 0.9
        }
        
        local 找色_每日 = {901 , 124 , 1020 , 181 ,
            "D9CAA9-101010" ,
            "5|-2|B6A88D-101010|6|-2|B6A88C-101010|9|-2|B5A78C-101010|11|-2|B4A68B-101010|11|-2|B4A68B-101010|6|-1|DDCEAD-101010|4|-13|978B74-101010|10|-14|4F4537-101010|14|-14|4F4537-101010|15|-14|4C4234-101010|16|-8|DDCEAD-101010|17|-5|C2B497-101010|18|2|8F836C-101010|18|2|8F836C-101010|18|4|91846D-101010|15|7|D4C6A5-101010|10|9|C0B396-101010|6|9|BFB295-101010|2|11|CDBFA0-101010" , 0 , 0.9
        }
        for i = 1 , 40 do
            if _ENV["图色_多点找色Ex"]( 找色_每日 , 0.9 , 0 , 0 , 0 , 1 , false ) then
                log_通用("检测到每日页面，开始执行一键开始委托")
                local 执行结果 = 点击一键开始委托()
                if 执行结果 then
                    log_通用("一键开始委托执行成功")
                    return true
                else
                    log_通用("一键开始委托执行失败")
                    return false
                end
            elseif _ENV["图色_多点找色Ex"]( 找色_任务页面 , 0.9 , 0 , 0 , 0 , 1 , true ) then
                log_通用("检测到任务页面，点击进入")
                _ENV["鼠标_随机点击"] (942 , 154 , 1200 , 1500)
            elseif _ENV["界面判断"] and _ENV["界面判断"]() == "主界面" then
                log_通用("检测到主界面，点击进入任务")
                _ENV["鼠标_随机点击"] (1857 , 45 , 1500 , 2200)
                _ENV["鼠标_随机点击"] (1495 , 291 , 2000 , 2200)
            else
                回到主界面()
            end
        end
        log_通用("领取每日委托任务超时,返回false")
        return false
end



local function 找色_点击紫色击杀讨伐两字(是否点击)
    log_通用("开启主线任务列表")
    开启主线任务列表()

    if 查找固定区域文字并点击({1380 , 114 , 1816 , 616}, "击杀修炼之林" , 400 , 是否点击) then
        log_通用("找到击杀修炼之林")
        return true
    elseif 查找固定区域文字并点击({1380 , 114 , 1816 , 616}, "讨伐" , 400 , 是否点击) then
        log_通用("找到紫色讨伐二字")
        return true
    else
        return false
    end
end



local M={}

function M.开始每日委托任务()
    读取等级, 读取版本号=读取强制每日委托版本号()
    if  _ENV["文件_任务是否完成"]("每日委托任务", 5) == true and (读取版本号==每日委托一键设置是否完成_强制每日任务版本号记录_版本号) then
		log_通用("每日委托任务已经完成")
		return true
	end
	log_通用("每日委托任务###################")
	_ENV["文件_保存完成时间"]("每日委托任务开始时间保存")
	-- 执行领取每日委托任务
    
	local 领取结果 = 领取每日委托任务()
	if not 领取结果 then
		log_通用("领取每日委托任务失败，退出")
		return false
	end
	
	log_通用("领取每日委托任务成功，开始执行任务")
	local 委托任务完成情况 = 0
	
	local 找色_主线任务列表1 = {1364 , 127 , 1445 , 452 ,
		"A29A8A-101010" ,
		"-2|2|CDBEA6-101010|-4|5|D6C9AF-101010|-4|7|D9CAB0-101010|-4|9|C7BCA4-101010|-5|12|CFC1A8-101010|-6|14|D6C8AC-101010|-6|18|F5E6C5-101010|-5|23|DCCCB1-101010|-5|26|DBCCB0-101010|-18|35|D4B799-101010|-12|38|BBA682-101010|-6|38|C0A384-101010|0|37|B7A182-101010|4|36|C3A68A-101010|8|34|B7A484-101010|9|32|E0C499-101010|-11|21|B3AA92-101010|-6|24|D1C1A8-101010|-5|23|DCCCB1-101010" , 0 , 0.9
	}
	local 找色_跳转确认 = {1047 , 765 , 1131 , 813 ,
		"9C9380-101010" ,
		"0|-7|C9C1B0-101010|-13|1|AAA18F-101010|-12|-10|A19684-101010|-7|-1|B3AA99-101010|-3|4|9A907E-101010|7|2|AAA08E-101010|8|-8|DAD3C2-101010|8|-10|B1A897-101010|0|-10|A09684-101010|-4|-6|998E7C-101010|-5|1|988E7C-101010|0|4|C0B8A6-101010|6|5|BBB2A1-101010|8|-2|CCC4B2-101010|8|-3|BBB3A1-101010|0|-5|988D7B-101010|-7|-5|E2DCCA-101010|-8|6|D6CEBD-101010|-2|5|DFD8C7-101010" , 0 , 0.9
	}

	for i = 1 , 800 do
        回到主界面()
		if 找色_点击完成委托任务图标() then
			log_通用("完成一个委托任务")
            委托任务完成情况 = 委托任务完成情况 + 1
		elseif	 _ENV["图色_多点找色Ex"](找色_复活 , 0.9 , 0 , 0 , 0 , 1 , true) or _ENV["文字寻找E"](找色_复活 , 3 , "复活" , true ) then
			log_通用("每日过程中被杀直接退出,下次再打")
			return true
			
		elseif 查找固定区域文字并点击({1804 , 654 , 1896 , 735}, "Quest", 1000,false) then
			
			for i = 1 , 40 do
				
				log_通用("委托任务进行中"..i)
				_ENV["延迟"](1000)
			end
            回到主界面()
            开启刺穿者群攻技能()
            找色_点击完成委托任务图标()
            if 找色_点击紫色击杀讨伐两字(false) == false then
                log_通用("没有紫色讨伐二字")
                if 查找固定区域文字并点击({1804 , 654 , 1896 , 735}, "Quest", 1000,true) then
                    _ENV["延迟"](5000)
                    if 找色_点击紫色击杀讨伐两字(false) == false then
                        log_通用("确认没有紫色讨伐二字")
                        log_通用("全部委托任务已完成3")
                        保存委托完成时间()
                        return true
                    end
                elseif 查找固定区域文字并点击({1804 , 654 , 1896 , 735}, "Auto", 1000,false) then
                    log_通用("Auto了，已经结束了每日")
                    _ENV["延迟"](5000)
                    if 找色_点击紫色击杀讨伐两字(false) == false then
                        log_通用("全部委托任务已完成4")
                        保存委托完成时间()
                        return true
                    end
                end
            end
		elseif 查找固定区域文字并点击({1804 , 654 , 1896 , 735}, "Quest", 500,false) == false then
            if 找色_点击紫色击杀讨伐两字(true) == true then
                if(查找固定区域文字并点击({600 , 110 , 975 , 147}, "已达到每日限制完成数量上限", 200,false,0,0,3) == true) then
                    log_通用("全部委托任务已完成5")
                    保存委托完成时间()
                    return true
                end
                log_通用("点击紫色讨伐两字  开始讨伐")
                if _ENV["图色_多点找色Ex"](找色_跳转确认 , 0.9 , 0 , 0 , 0 , 1 , true,5000) then
                    log_通用("跳转确认")
                end
                委托任务完成情况 = 0 
            elseif 查找固定区域文字并点击({1804 , 654 , 1896 , 735}, "Auto", 1000,false) then
                log_通用("Auto了，已经结束了每日")
                _ENV["延迟"](5000)
                if 找色_点击紫色击杀讨伐两字(false) == false then
                    log_通用("全部委托任务已完成6")
                    保存委托完成时间()
                    return true
                end
            else
                log_通用("没有Quest和Auto 也没有任务需要做了。。。。。")
                break
            end
		else
            --log_通用("开启主线任务列表")
			--开启主线任务列表()
		end
	end
end

function M.Test()
    --查找固定区域文字并点击({90,909,198,941}, "保存设置", 1000,true)
    -- 读取角色数据文件
    --M.开始每日委托任务()
    --保存委托完成时间()
    --通过等级初始化地图(55)
    获取当前等级()
end

return M